Der Befehl arp-scan -l
wurde verwendet, um das lokale Netzwerk nach aktiven Hosts zu scannen. Das Ergebnis zeigt, dass die IP-Adresse 192.168.2.126
dem Gerät mit der MAC-Adresse 08:00:27:98:0d:5f
gehört, das von PCS Systemtechnik GmbH hergestellt wurde. Dies ist ein wichtiger erster Schritt, um das Zielsystem im Netzwerk zu identifizieren.
Der Befehl echo "192.168.2.126 HackDayAlbania.vln" >> /etc/hosts
fügt die IP-Adresse und den Hostnamen des Zielsystems zur lokalen /etc/hosts
-Datei hinzu. Dies ermöglicht es, das Zielsystem einfach über seinen Hostnamen anzusprechen, anstatt seine IP-Adresse verwenden zu müssen. Dies erleichtert die weitere Analyse und das Testen des Systems.
Der Befehl nmap -sS -sC -sV -A -p- 192.168.2.126 -Pn --min-rate 5000
führt einen umfassenden Nmap-Scan auf dem Zielsystem durch. Hier ist eine detaillierte Analyse der verwendeten Optionen:
-sS
: SYN-Scan (Stealth Scan). Diese Option führt einen TCP-SYN-Scan durch, der es Nmap ermöglicht, offene Ports zu identifizieren, ohne eine vollständige TCP-Verbindung herzustellen. Dies macht den Scan weniger auffällig und reduziert die Wahrscheinlichkeit, dass er von Firewalls oder Intrusion Detection Systems (IDS) erkannt wird.-sC
: Führt Standard-Nmap-Skripte aus, um Informationen über die erkannten Dienste zu sammeln. Diese Skripte können beispielsweise die Version des Dienstes ermitteln oder nach bekannten Schwachstellen suchen.-sV
: Erkennt die Version der auf den offenen Ports laufenden Dienste. Dies ist wichtig, um bekannte Schwachstellen in bestimmten Versionen von Software zu identifizieren.-A
: Aktiviert aggressive Scan-Optionen, einschließlich Betriebssystemerkennung (-O
), Versionserkennung (-sV
), Skriptausführung (-sC
) und Traceroute (--traceroute
). Diese Option kombiniert mehrere Scan-Techniken, um ein möglichst umfassendes Bild des Zielsystems zu erhalten.-p-
: Scannt alle 65535 TCP-Ports. Dies stellt sicher, dass keine offenen Ports übersehen werden.-Pn
: Überspringt die Host-Entdeckung. Nmap geht davon aus, dass der Host erreichbar ist, und führt den Scan direkt durch. Dies ist nützlich, wenn der Host auf ICMP-Anfragen (Ping) nicht antwortet oder wenn eine Firewall den ICMP-Verkehr blockiert.--min-rate 5000
: Sendet Pakete mit einer minimalen Rate von 5000 pro Sekunde. Dies beschleunigt den Scan-Vorgang, kann aber auch die Wahrscheinlichkeit erhöhen, dass der Scan erkannt wird oder dass es zu Problemen mit der Netzwerkverbindung kommt.
Die Ergebnisse des Nmap-Scans zeigen, dass auf dem Zielsystem die Ports 22 (SSH) und 8008 (HTTP) offen sind. Der SSH-Dienst ist die Version OpenSSH 7.2p2 Ubuntu 4ubuntu2.1, und der HTTP-Dienst ist Apache httpd 2.4.18 ((Ubuntu)). Der Scan hat auch die MAC-Adresse des Zielsystems (08:00:27:98:0D:5F
) und den Gerätetyp (racle VirtualBox virtual NIC) ermittelt.
Darüber hinaus hat der Scan Informationen über die robots.txt
-Datei auf dem HTTP-Server gefunden, die 26 nicht erlaubte Einträge enthält. Diese Einträge können Hinweise auf versteckte oder sensible Bereiche der Website geben.
Der Nmap-Scan liefert wertvolle Informationen über das Zielsystem, die in den folgenden Phasen des Pentests verwendet werden können, um Schwachstellen zu identifizieren und auszunutzen.
In der Phase der Web Enumeration konzentrieren wir uns darauf, Informationen über die Webanwendung zu sammeln, die auf dem Zielsystem läuft. Dies umfasst das Scannen der Website mit Tools wie Nikto und Gobuster, um versteckte Dateien und Verzeichnisse zu finden, sowie die Analyse der robots.txt
-Datei, um nicht erlaubte Einträge zu identifizieren.
Der Befehl nikto -h http://192.168.2.126:8008
führt einen Nikto-Scan auf dem Zielsystem durch. Nikto ist ein Open-Source-Webserver-Scanner, der nach potenziell gefährlichen Dateien, veralteten Softwareversionen und anderen Sicherheitsproblemen sucht.
Die Ergebnisse des Nikto-Scans zeigen mehrere interessante Punkte:
robots.txt
-Datei enthält mehrere Einträge, die auf versteckte oder sensible Bereiche der Website hinweisen./#wp-config.php#
wurde gefunden, die möglicherweise Anmeldeinformationen enthält.Diese Ergebnisse liefern wertvolle Hinweise auf potenzielle Schwachstellen, die in den folgenden Phasen des Pentests weiter untersucht werden können.
Der Befehl gobuster dir -u "http://192.168.2.126:8008" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt..... -b '503,404,403' -e --no-error -k
führt einen Gobuster-Scan auf dem Zielsystem durch. Gobuster ist ein Open-Source-Tool, das zum Auffinden von versteckten Dateien und Verzeichnissen auf einem Webserver verwendet wird.
Hier ist eine Analyse der verwendeten Optionen:
dir
: Gibt an, dass wir nach Verzeichnissen suchen.-u "http://192.168.2.126:8008"
: Gibt die Ziel-URL an.-w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt"
: Gibt die Wortliste an, die zum Auffinden von Verzeichnissen verwendet werden soll. In diesem Fall wird die "directory-list-2.3-medium.txt"-Wortliste aus den SecLists verwendet.-x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh....
: Gibt die Dateierweiterungen an, nach denen gesucht werden soll.-b '503,404,403'
: Gibt die HTTP-Statuscodes an, die als Fehler behandelt werden sollen. In diesem Fall werden die Statuscodes 503 (Service Unavailable), 404 (Not Found) und 403 (Forbidden) als Fehler behandelt.-e
: Gibt an, dass auch nach existierenden Dateien gesucht werden soll.--no-error
: Unterdrückt die Anzeige von Fehlermeldungen.-k
: Ignoriert SSL-Zertifikatswarnungen.
Die Ergebnisse des Gobuster-Scans zeigen, dass die Dateien index.html
, bg.png
und robots.txt
sowie das Verzeichnis js
gefunden wurden. Diese Informationen können verwendet werden, um die Struktur der Website besser zu verstehen und potenzielle Angriffspunkte zu identifizieren.
Der Befehl curl -s http://192.168.2.126:8008/robots.txt
ruft den Inhalt der robots.txt
-Datei vom Zielsystem ab. Die robots.txt
-Datei ist eine Textdatei, die Webmaster verwenden, um Suchmaschinen-Crawlern Anweisungen zu geben, welche Bereiche ihrer Website nicht gecrawlt werden sollen.
Die Ergebnisse zeigen, dass die robots.txt
-Datei 26 nicht erlaubte Einträge enthält. Diese Einträge können Hinweise auf versteckte oder sensible Bereiche der Website geben, die in den folgenden Phasen des Pentests weiter untersucht werden sollten.
Der Befehl curl -s http://192.168.2.126:8008/robots.txt | awk '{print $2}'
ruft den Inhalt der robots.txt
-Datei ab und filtert dann die Ausgabe mit dem awk
-Befehl, um nur die nicht erlaubten Pfade (die zweite Spalte) anzuzeigen.
Diese Liste von nicht erlaubten Pfaden kann verwendet werden, um gezielt nach versteckten oder sensiblen Bereichen der Website zu suchen.
Der Befehl for i in $(cat disalow.txt); do echo -e "\n\n$i\n\n";curl http://192.168.2.126:8008/$i;done
führt eine Schleife aus, die jeden nicht erlaubten Pfad aus der Datei disalow.txt
(die zuvor aus der robots.txt
-Datei extrahiert wurde) verwendet, um eine HTTP-Anfrage an den Webserver zu senden und die Antwort anzuzeigen.
Dieser Befehl automatisiert den Prozess des Durchsuchens der nicht erlaubten Pfade, um potenzielle Schwachstellen oder interessante Informationen zu finden.
Die Ausgabe zeigt, dass der Pfad /unisxcudkqjydw/
die Meldung "IS there any /vulnbank/ in there ???" enthält, was auf ein verstecktes Verzeichnis namens vulnbank
hindeutet. Der Pfad /dwrbgldmtzshmf/
enthält einen Verweis auf ein Bild namens background.jpg
.
Der Befehl view-source:http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/
öffnet die Quellcodeansicht des Verzeichnisses /unisxcudkqjydw/vulnbank/
im Browser.
Diese Aktion ermöglicht es, den Inhalt des Verzeichnisses zu inspizieren und potenzielle Schwachstellen oder interessante Dateien zu identifizieren.
Der Aufruf von http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/
im Browser zeigt den Inhalt des Verzeichnisses /unisxcudkqjydw/vulnbank/
an.
Die Ausgabe zeigt, dass das Verzeichnis ein Unterverzeichnis namens client/
enthält. Dies könnte ein interessanter Bereich sein, um weitere Informationen über die Webanwendung zu sammeln.
Der Aufruf von http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/client/login.php
im Browser zeigt die Login-Seite der Webanwendung.
Die Ausgabe enthält eine Warnmeldung, die auf ein Problem mit der Datenbankkonfiguration hinweist (mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/unisxcudkqjydw/vulnbank/client/config.php on line 102
). Diese Warnmeldung könnte ein Hinweis auf eine potenzielle SQL-Injection-Schwachstelle sein.
Die Meldung "Invalid Credentials . . ." deutet darauf hin, dass die Login-Seite eine Authentifizierung erfordert.
In der Phase des Initial Access versuchen wir, uns Zugriff auf das Zielsystem zu verschaffen. Dies kann durch Ausnutzung von Schwachstellen in der Webanwendung, durch Brute-Force-Angriffe auf die Login-Seite oder durch andere Techniken erfolgen.
Der Befehl wfuzz -c -d "username=FUZZ'#" --hs Invalid -w /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -u http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/client/login.php
führt einen WFuzz-Angriff auf die Login-Seite durch, um Benutzernamen zu finden, die in Kombination mit einer SQL-Injection-Payload ('#
) eine erfolgreiche Anmeldung ermöglichen.
Hier ist eine Analyse der verwendeten Optionen:
-c
: Aktiviert die Farbausgabe.-d "username=FUZZ'#"
: Gibt die POST-Daten für die Anfrage an. Der Parameter username
wird mit der Payload FUZZ'#
gefüllt, wobei FUZZ
durch jeden Benutzernamen aus der Wortliste ersetzt wird. Das '#
-Zeichen ist ein Kommentar in SQL und wird verwendet, um den Rest der Abfrage zu ignorieren.--hs Invalid
: Gibt an, dass Antworten, die den String "Invalid" enthalten, ausgefiltert werden sollen. Dies dient dazu, ungültige Anmeldeversuche herauszufiltern.-w /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
: Gibt die Wortliste an, die für die Benutzernamen verwendet werden soll.-u http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/client/login.php
: Gibt die Ziel-URL an.Die Ergebnisse zeigen, dass die Benutzernamen "jeff" und "Jeff" eine 302-Weiterleitung verursachen, was darauf hindeutet, dass diese Benutzernamen in Kombination mit der SQL-Injection-Payload eine erfolgreiche Anmeldung ermöglichen.
Durch die SQL-Injection war es möglich sich am System an dem Login jeff zu authentifizieren
Dieser Abschnitt zeigt ein Beispiel für einen erfolgreichen SQL-Injection-Angriff. Die Payload admin' or '1'='0'#
wird verwendet, um sich als Benutzer "Charles D. Hobson" anzumelden.
Die Ausgabe zeigt, dass der Benutzer erfolgreich angemeldet wurde und Zugriff auf sein Konto hat. Dies bestätigt, dass die Webanwendung anfällig für SQL-Injection-Angriffe ist.
Die Meldung "After we got hacked we our allowing only image files to upload such as jpg , jpeg , bmp etc..." deutet darauf hin, dass die Webanwendung zuvor gehackt wurde und nun versucht, sich durch Einschränkung der Dateiuploads zu schützen. Dies könnte ein Hinweis auf eine potenzielle Schwachstelle im Zusammenhang mit Dateiuploads sein.
Dieser Proof of Concept (POC) demonstriert, wie ein unbefugter Dateiupload in Kombination mit einer Remote Code Execution (RCE)-Schwachstelle ausgenutzt werden kann, um beliebigen Code auf dem Zielsystem auszuführen.
Dieser Abschnitt zeigt den BurpSuite Request, der zum Hochladen einer PHP-Reverse-Shell (shell2.php
) verwendet wurde.
Der Request verwendet den multipart/form-data
Content-Type, um die Datei shell2.php
zusammen mit den Formulardaten (problem
und description
) hochzuladen.
Der Inhalt der shell2.php
-Datei ist ein PHP-Skript, das eine Reverse-Shell-Verbindung zu der angegebenen IP-Adresse (192.168.2.199
) und dem Port (9001
) herstellt.
Es ist wichtig zu beachten, dass der Payload für die Reverse-Shell maskiert wurde, um zu verhindern, dass er vom Browser interpretiert oder ausgeführt wird.
Dieser Abschnitt zeigt die Antwort des Servers auf den BurpSuite Request.
Die Antwort enthält den HTTP-Statuscode 200 OK, was darauf hindeutet, dass der Request erfolgreich war.
Die Meldung "After we got hacked we our allowing only image files to upload such as jpg , jpeg , bmp etc..." bestätigt, dass die Webanwendung nur noch Bilddateien zulässt. Dies deutet darauf hin, dass ein direkter Upload von PHP-Dateien nicht mehr möglich ist.
Um die Einschränkung des Dateityps zu umgehen, wird in diesem Abschnitt gezeigt, wie eine PHP-Datei in eine Bilddatei umbenannt und mit einem GIF-Header versehen werden kann.
Der Content-Type wird auf image/jpeg
gesetzt, um den Server zu täuschen und die Datei als Bild zu akzeptieren.
Der GIF-Header (GIF89a;
) wird hinzugefügt, um sicherzustellen, dass die Datei als gültiges Bild erkannt wird.
Dieser Abschnitt zeigt die Antwort des Servers auf den zweiten BurpSuite Request.
Die Meldung "Ticket Created Successfully" deutet darauf hin, dass der Upload der Datei shell2.php.jpg
erfolgreich war.
Der Befehl dirb http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/ /usr/share/seclists/Discovery/Web-Content/big.txt -R -X .php,.txt,.jpg
führt einen weiteren DIRB-Scan durch, um das Verzeichnis /unisxcudkqjydw/vulnbank/
nach Dateien mit den Erweiterungen .php
, .txt
und .jpg
zu durchsuchen.
Die Ergebnisse zeigen, dass keine Dateien gefunden wurden. Dies könnte daran liegen, dass die hochgeladenen Dateien in einem anderen Verzeichnis gespeichert werden oder dass der DIRB-Scan nicht korrekt konfiguriert ist.
Der Aufruf von http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/client/view_ticket.php?id=3
im Browser zeigt die Details des erstellten Tickets an, einschließlich des hochgeladenen Attachments (shell2.php.jpg
).
Dies bestätigt, dass die Datei erfolgreich hochgeladen wurde und nun über das Ticket-System zugänglich ist.
Der Aufruf von view-source:http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/client/view_file.php?filename=shell.php.jpg
im Browser zeigt den Quellcode der Datei view_file.php
an, die zum Anzeigen der hochgeladenen Dateien verwendet wird.
Die Ausgabe enthält eine Notice- und eine Warning-Meldung, die darauf hindeuten, dass die Datei shell.php.jpg
versucht, einen Befehl auszuführen, der nicht definiert ist (Undefined index: cmd
) und dass die Ausführung eines leeren Befehls nicht möglich ist (Cannot execute a blank command
).
Dies deutet darauf hin, dass die Datei view_file.php
anfällig für eine Remote Code Execution (RCE)-Schwachstelle ist, da sie versucht, einen vom Benutzer bereitgestellten Befehl auszuführen.
Der Aufruf von view-source:http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/client/view_file.php?filename=shell.php.jpg?cmd=id
im Browser versucht, den Befehl id
über den Parameter cmd
auszuführen.
Die Ausgabe "Only images are allowed to get included. We hate hackers." deutet darauf hin, dass die Webanwendung versucht, die Ausführung von PHP-Dateien zu verhindern.
Trotz dieser Schutzmaßnahme ist es möglicherweise möglich, die RCE-Schwachstelle auszunutzen, indem man die PHP-Datei als Bilddatei tarnt und dann einen Befehl über den Parameter cmd
ausführt.
Der Befehl cp '/home/ccat/Downloads/shell2.php' '/home/ccat/Downloads/shell2.php.jpg'
kopiert die PHP-Datei shell2.php
und benennt sie in shell2.php.jpg
um.
Dieser Schritt ist notwendig, um die PHP-Datei als Bilddatei zu tarnen und die Schutzmaßnahmen der Webanwendung zu umgehen.
Der Aufruf von view-source:http://192.168.2.126:8008/unisxcudkqjydw/vulnbank/client/view_ticket.php?id=5
im Browser zeigt die Details des erstellten Tickets an, einschließlich des Links zu der hochgeladenen Datei (shell2.php.jpg
).
Der Hinweis "Anklicken -->> img src='view_file.php?filename=shell2.php.jpg'" deutet darauf hin, dass durch Anklicken des Links die Datei shell2.php.jpg
ausgeführt wird.
Dieser Abschnitt bestätigt, dass durch Anklicken des Links die Reverse-Shell-Verbindung hergestellt wird.
Der Befehl nc -lvnp 9001
startet Netcat im Listening-Modus auf Port 9001.
Die Ausgabe zeigt, dass eine Verbindung von der IP-Adresse des Zielsystems (192.168.2.126
) hergestellt wurde und dass eine Reverse-Shell-Verbindung erfolgreich aufgebaut wurde.
Die Informationen über das Zielsystem (Betriebssystem, Kernel-Version, Benutzer-ID, Gruppen-ID) werden ebenfalls angezeigt.
Dies bestätigt, dass die RCE-Schwachstelle erfolgreich ausgenutzt wurde und dass nun eine Reverse-Shell-Verbindung zum Zielsystem besteht.
Fantastisch, der Zugriff als `www-data` war erfolgreich! Nun haben wir unser Ziel erreicht und können mit der nächsten Phase fortfahren.
In der Phase der Privilege Escalation versuchen wir, unsere Berechtigungen auf dem Zielsystem zu erhöhen, um Root-Zugriff zu erhalten. Dies kann durch Ausnutzung von Schwachstellen in der Systemkonfiguration, in SUID- oder SGID-Binärdateien oder durch andere Techniken erfolgen.
Der Befehl find / -type f -perm -4000 -ls 2>/dev/null
sucht nach SUID-Dateien auf dem System. SUID-Dateien werden mit den Berechtigungen des Eigentümers ausgeführt, was bedeutet, dass ein Benutzer mit eingeschränkten Berechtigungen möglicherweise in der Lage ist, Befehle mit Root-Rechten auszuführen, wenn er eine SUID-Datei ausführt, die Root gehört.
Der Befehl find * -name *.php 2>/dev/null
sucht nach PHP-Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen.
Die Ergebnisse dieser Befehle können verwendet werden, um potenzielle Schwachstellen zu identifizieren, die für die Privilege Escalation ausgenutzt werden könnten.
Der Befehl cat /var/www/html/unisxcudkqjydw/vulnbank/client/config.php
zeigt den Inhalt der Konfigurationsdatei der Webanwendung an.
Diese Datei enthält die Datenbankanmeldeinformationen, einschließlich des Benutzernamens (root
) und des Passworts (NuCiGoGo321
). Diese Anmeldeinformationen können verwendet werden, um sich bei der Datenbank anzumelden und möglicherweise Zugriff auf sensible Daten zu erhalten.
Der Befehl su root
versucht, zum Root-Benutzer zu wechseln.
Die Ausgabe "su: Authentication failure" deutet darauf hin, dass das Passwort für den Root-Benutzer nicht bekannt ist.
Der Befehl export TERM=xterm
setzt die Terminalvariable auf xterm
. Dies kann in einigen Fällen erforderlich sein, um die Funktionalität des Terminals zu verbessern oder um Probleme mit der Darstellung von Zeichen zu beheben.
Der Befehl mysql -u root -p
versucht, sich mit dem Benutzernamen root
bei der MySQL-Datenbank anzumelden.
Das Passwort wird interaktiv abgefragt.
Der Befehl show databases;
zeigt eine Liste aller Datenbanken auf dem MySQL-Server an.
Die Ausgabe zeigt, dass die Datenbanken information_schema
, bank_database
, mysql
, performance_schema
, sys
und vulnbank
vorhanden sind.
Der Befehl select bank_database;
versucht, die Datenbank bank_database
auszuwählen.
Die Ausgabe "ERRR 1054 (42S22): Unknown column 'bank_database' in 'field list'" deutet darauf hin, dass die Spalte bank_database
nicht existiert. Dies ist ein Syntaxfehler.
Der Befehl use bank_database;
wählt die Datenbank bank_database
aus.
Die Ausgabe "Database changed" bestätigt, dass die Datenbank erfolgreich ausgewählt wurde.
Der Befehl show tables;
zeigt eine Liste aller Tabellen in der ausgewählten Datenbank (bank_database
) an.
Die Ausgabe zeigt, dass die Tabellen klienti
und tickets
vorhanden sind.
Der Befehl select * from klienti;
zeigt alle Daten aus der Tabelle klienti
an.
Die Ausgabe zeigt die Benutzerdaten, einschließlich Benutzernamen und Passwörter.
Der Befehl select * from tickets;
zeigt alle Daten aus der Tabelle tickets
an.
Die Ausgabe zeigt die Ticket-Informationen, einschließlich der hochgeladenen Dateien.
Der Befehl use vulnbank;
wählt die Datenbank vulnbank
aus.
Die Ausgabe "Database changed" bestätigt, dass die Datenbank erfolgreich ausgewählt wurde.
Der Befehl show tables;
zeigt eine Liste aller Tabellen in der ausgewählten Datenbank (vulnbank
) an.
Die Ausgabe zeigt, dass die Tabellen klienti
und tickets
vorhanden sind.
Der Befehl select * from klienti;
zeigt alle Daten aus der Tabelle klienti
an.
Die Ausgabe "Empty set (0.00 sec)" deutet darauf hin, dass die Tabelle leer ist.
Der Befehl select * from tickets;
zeigt alle Daten aus der Tabelle tickets
an.
Die Ausgabe "Empty set (0.00 sec)" deutet darauf hin, dass die Tabelle leer ist.
Die Datenbanken wurden nun durchsucht nun suchen wir nach weiteren möglichkeiten
Der Befehl ls /home/
listet die Verzeichnisse im /home/
-Verzeichnis auf.
Die Ausgabe zeigt, dass ein Verzeichnis namens taviso
vorhanden ist. Dies könnte das Home-Verzeichnis eines Benutzers namens Taviso sein.
Der Befehl find / -type f -perm -2000 -ls 2>/dev/null
sucht nach SGID-Dateien auf dem System. SGID-Dateien werden mit den Berechtigungen der Gruppe ausgeführt, was bedeutet, dass ein Benutzer möglicherweise in der Lage ist, Befehle mit den Berechtigungen der Gruppe auszuführen, wenn er eine SGID-Datei ausführt.
Die Ausgabe zeigt eine Liste von SGID-Dateien, die potenziell für die Privilege Escalation ausgenutzt werden könnten.
Der Befehl find / -type f -perm -0002 -ls 2>/dev/null | head -n 20
sucht nach Dateien mit weltweit beschreibbaren Berechtigungen (-0002
) auf dem System und zeigt die ersten 20 Ergebnisse an.
Die Ausgabe zeigt eine Liste von Dateien, die potenziell für die Privilege Escalation ausgenutzt werden könnten, da jeder Benutzer in der Lage ist, diese Dateien zu ändern.
Besonders interessant ist die Datei /etc/passwd
, da das Bearbeiten dieser Datei möglicherweise die Erstellung eines neuen Root-Benutzers oder die Änderung des Passworts eines vorhandenen Root-Benutzers ermöglicht.
Der Befehl ls -la /etc/passwd
zeigt die Berechtigungen und Metadaten der Datei /etc/passwd
an.
Die Ausgabe bestätigt, dass die Datei weltweit beschreibbar ist (-rw-r--rw-
). Dies bedeutet, dass jeder Benutzer in der Lage ist, die Datei zu ändern.
Der Befehl cd /dev/shm/
wechselt in das Verzeichnis /dev/shm/
.
Das Verzeichnis /dev/shm/
ist ein Shared-Memory-Verzeichnis, das sich im RAM befindet und für den schnellen Datenaustausch zwischen Prozessen verwendet wird.
Hier fehlt ein Befehl.
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false syslog:x:104:108/home/syslog:/bin/false _apt:x:105:65534/nonexistent:/bin/false lxd:x:106:65534/var/lib/lxd/:/bin/false mysql:x:107:111:MySQL Server,,,:/nonexistent:/bin/false messagebus:x:108:112/var/run/dbus:/bin/false uuidd:x:109:113/run/uuidd:/bin/false dnsmasq:x:110:65534:dnsmasq,,,:/var/lib/misc:/bin/false sshd:x:111:65534/var/run/sshd:/usr/sbin/nologin taviso:x:1000:1000:Taviso,,,:/home/taviso:/bin/bash
Der Befehl cat /etc/passwd
zeigt den Inhalt der Datei /etc/passwd
an.
Die Datei /etc/passwd
enthält Informationen über die Benutzerkonten auf dem System, einschließlich des Benutzernamens, der Benutzer-ID, der Gruppen-ID, des Home-Verzeichnisses und der Shell.
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false syslog:x:104:108/home/syslog:/bin/false _apt:x:105:65534/nonexistent:/bin/false lxd:x:106:65534/var/lib/lxd/:/bin/false mysql:x:107:111:MySQL Server,,,:/nonexistent:/bin/false messagebus:x:108:112/var/run/dbus:/bin/false uuidd:x:109:113/run/uuidd:/bin/false dnsmasq:x:110:65534:dnsmasq,,,:/var/lib/misc:/bin/false sshd:x:111:65534/var/run/sshd:/usr/sbin/nologin taviso:x:1000:1000:Taviso,,,:/home/taviso:/bin/bash ben:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash
Der Befehl cat /etc/passwd
zeigt erneut den Inhalt der Datei /etc/passwd
an.
Es wurde ein neuer Benutzer namens ben
mit der Benutzer-ID 0 und der Gruppen-ID 0 hinzugefügt. Dies bedeutet, dass der Benutzer ben
Root-Rechte hat.
Die Zeile für den Benutzer ben
enthält auch einen Hash für das Passwort.
Der Befehl su ben
versucht, zum Benutzer ben
zu wechseln.
Das Passwort wird interaktiv abgefragt.
Der Befehl id
zeigt die Benutzer-ID, die Gruppen-ID und die Gruppen des aktuellen Benutzers an.
Die Ausgabe "uid=0(root) gid=0(root) groups=0(root)" bestätigt, dass der aktuelle Benutzer Root-Rechte hat.
Fantastisch! Der Root-Zugriff war erfolgreich! Nun haben wir unser Ziel erreicht.
Nachdem die /etc/passwd manipuliert und ein Benutzer mit uid=0 hinzugefügt wurde, kann man sich mit "su ben" anmelden und anschließend mit dem Befehl "id" bestätigen, dass die Root-Rechte erfolgreich erlangt wurden. Dieser erfolgreiche Zugriff auf Root-Rechte stellt einen klaren Beweis für die Sicherheitslücke im System dar.
In der Phase der Reconnaissance sammeln wir Informationen über das Zielsystem. Dies umfasst das Scannen des Netzwerks, um offene Ports und Dienste zu identifizieren, sowie die Auflösung von Hostnamen, um die IP-Adresse des Ziels zu bestimmen.